load("usa.rda")
load("usa_i.rda")
network::list.vertex.attributes(usa)
## [1] "country"      "lat"          "long"         "na"          
## [5] "type"         "vertex.names"
network::list.edge.attributes(usa)
## [1] "na"     "weight"
plot(usa)

edge_density(usa_i)
## [1] 0.01505828
mean_distance(usa_i, directed = T)
## [1] 3.50756
get_diameter(usa_i)
## + 13/610 vertices, named, from c2d1148:
##  [1] LPS WSX DHB RCE FBS LKE SEA JNU ANC BET OOK TNK WWT
i_list <- list()
  
for(i in 1:1000){
  i_list[[i]] <- erdos.renyi.game(n = gorder(usa_i),  p.or.m = edge_density(usa_i), 
    type = "gnp")
}
avg_dist <- unlist(lapply(i_list, mean_distance, directed = T))
igraph::list.vertex.attributes(usa_i)
## [1] "country" "lat"     "long"    "na"      "type"    "name"
table(V(usa_i)$type)
## 
##         closed  large_airport medium_airport  seaplane_base  small_airport 
##              2            134            318             26            130
type_num <- as.numeric(as.factor(V(usa_i)$type))
assortativity(usa_i, type_num)
## [1] 0.3529708
assortativity.degree(usa_i, directed=T)
## [1] -0.3146973
reciprocity(usa_i)
## [1] 0.9678227
ggplot()+geom_histogram(aes(x=avg_dist))+
  geom_vline(xintercept = mean_distance(usa_i, directed=T),  size=1.2, color="red")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

ego(usa_i,1, "JFK", mode=c("out"))
## [[1]]
## + 58/610 vertices, named, from c2d1148:
##  [1] JFK ABQ ATL AUS BNA BOS BTV BUF BUR BWI CHS CLE CLT CMH CVG DCA DEN
## [18] DFW DTW FLL HNL HOU IAD IND JAX LAS LAX LGB MCO MIA MSP MSY OAK ORD
## [35] ORF PBI PDX PHL PHX PIT PWM RDU RIC ROC RSW SAN SAT SAV SDF SEA SFO
## [52] SJC SLC SMF SRQ STL SYR TPA
ego(usa_i,2, "JFK", mode=c("out"))
## [[1]]
## + 386/610 vertices, named, from c2d1148:
##   [1] JFK ABQ ATL AUS BNA BOS BTV BUF BUR BWI CHS CLE CLT CMH CVG DCA DEN
##  [18] DFW DTW FLL HNL HOU IAD IND JAX LAS LAX LGB MCO MIA MSP MSY OAK ORD
##  [35] ORF PBI PDX PHL PHX PIT PWM RDU RIC ROC RSW SAN SAT SAV SDF SEA SFO
##  [52] SJC SLC SMF SRQ STL SYR TPA CNM DAL IAH LAM MCI MDW ABE ABY AEX AGS
##  [69] ALB ATW AVL AVP AZO BDL BHM BMI BQK BTR CAE CAK CHA CHO CID COS CRW
##  [86] CSG DAB DAY DHN DSM ECP ELP EVV EWN EWR EYW FAR FAY FNT FSD FSM FWA
## [103] GNV GPT GRB GRK GRR GSO GSP GTR HPN HSV ICT ILM JAN LAN LEX LFT LGA
## [120] LIT LWB MBS MCN MDT MEI MEM MGM MHT MKE MLB MLI MLU MOB MSL MSN MYR
## [137] OAJ OKC OMA PHF PIA PIB PNS PVD ROA SBN SGF SHV SNA TLH TRI TTN TUL
## [154] TUP TUS TYS VLD VPS XNA HRL LBB AHN MKL ACK ACY AUG BHB HYA ISP LEB
## + ... omitted several vertices
ego_size(usa_i,2, "JFK", mode=c("out"))
## [1] 386
neighbors(usa_i, "JFK", mode="in")
## + 57/610 vertices, named, from c2d1148:
##  [1] ABQ ATL AUS BNA BOS BTV BUF BUR BWI CHS CLE CLT CMH CVG DCA DEN DFW
## [18] DTW FLL HNL HOU IAD IND JAX LAS LAX LGB MCO MIA MSP MSY OAK ORD ORF
## [35] PBI PDX PHL PHX PIT PWM RDU RIC ROC RSW SAN SAT SAV SDF SEA SFO SJC
## [52] SLC SMF SRQ STL SYR TPA
d_out <- igraph::degree(usa_i, mode = "out", normalized = T)
which.max(d_out)
## ATL 
##  41
d_out[41]
##       ATL 
## 0.2512315
d_out <- igraph::degree(usa_i, mode = "out")
which.max(d_out)
## ATL 
##  41
d_out[41]
## ATL 
## 153
ggplot()+geom_histogram(aes(x=d_out))+
  labs(x="Outgoing Flights", 
       title="Histogram of outgoing flights")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

d_in <- igraph::degree(usa_i, mode = "in", normalized = T)
which.max(d_in)
## ATL 
##  41
d_in[41]
##       ATL 
## 0.2495895
ggplot()+geom_histogram(aes(x=d_in))
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

f_in <- strength(usa_i, mode = "in")
which.max(f_in)
## ATL 
##  41
f_in[41]
## ATL 
## 741
ggplot()+geom_histogram(aes(x=f_in))+
  labs(x="Flights", title="Distribution of incoming flights")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

close <- igraph::closeness(usa_i,weights = 1/E(usa_i)$weight,
                           normalize=T, mode="all")
## Warning in igraph::closeness(usa_i, weights = 1/E(usa_i)$weight, normalize
## = T, : At centrality.c:2617 :closeness centrality is not well-defined for
## disconnected graphs
df_c <- data.frame(airports=names(close),closeness=close)
df_c <- df_c[order(df_c$closeness, decreasing=T),]
head(df_c)
bet <- igraph::betweenness(usa_i, weights = 1/E(usa_i)$weight,
                           normalize=T)
sort(bet, decreasing = T)[1:5]
##        ATL        ANC        SEA        DEN        BET 
## 0.59797321 0.39785328 0.36462840 0.14840369 0.09277279
p_rank <- page_rank(usa_i)$vector
sort(p_rank, decreasing = T)[1:10]
##        ATL        DEN        ORD        DFW        LAX        ANC 
## 0.04406593 0.02492413 0.02414507 0.02214536 0.01939483 0.01532216 
##        CLT        PHX        MSP        LAS 
## 0.01433456 0.01388004 0.01315252 0.01298363
usa_i1 <- as.undirected(usa_i, mode = "collapse")
com <- fastgreedy.community(usa_i1) 
sizes(com)
## Community sizes
##   1   2   3   4   5   6   7   8   9  10  11  12  13 
## 155 144 104 151  28   4   5   6   4   2   2   2   3
plot(com, usa_i1)

s <- coreness(usa_i, mode="all")
s
## ABE ABI ABL ABQ ABR ABY ACK ACT ACV ACY ADK ADQ AET AEX AGN AGS AHN AIA 
##  18   2   3  38   2   2   6   2   4  18   2   2   4   6   2   6   2   2 
## AIN AKB AKI AKK AKN AKP ALB ALO ALS ALW AMA ANC ANI ANV AOO AOS APF APN 
##   4   2   4   2   4   4  34   2   4   2  11  20   5   4   4   1   2   4 
## ARC ART ASE ATK ATL ATT ATW ATY AUG AUK AUS AVL AVP AZA AZO BDL BET BFD 
##   2   4   4   4  56   3  14   4   2   4  56  16  12  18   8  44   5   4 
## BFF BFI BFL BGM BGR BHB BHM BIL BIS BJI BKC BKG BKW BLD BLI BLV BMI BNA 
##   2   2  10   6  12   2  36  14  10   2   4   8   3   2  18   2  16  56 
## BOI BOS BPT BQK BRD BRL BRO BRW BTI BTM BTR BTT BTV BUF BUR BWI BZN CAE 
##  28  56   2   2   4   4   4   5   4   2   8   4  20  40  22  56  14  20 
## CAK CDB CDC CDR CDV CEC CEM CEZ CGA CGI CHA CHO CHS CHU CIC CID CIK CIU 
##  22   2   2   2   4   4   2   2   5   2  16  12  39   2   2  18   4   2 
## CKB CKD CKX CLD CLE CLL CLM CLT CMH CMI CMX CNM CNY COD COS COU CPR CRP 
##   4   2   2   2  56   4   2  56  54   4   2   2   2   4  22   4   6   7 
## CRW CSG CVG CWA CXF CYF CYS DAB DAL DAY DBQ DCA DDC DEC DEN DFW DHB DHN 
##  12   2  56   6   2   4   2   4  29  32   2  56   4   4  56  56   2   2 
## DIK DLG DLH DRG DRO DSM DTW DUJ DUT EAR EAT EAU ECP EDA EEK EGE EGX EKO 
##   4   4   8   4   6  28  56   4   2   2   2   2  10   2   4   2   2   2 
## ELD ELI ELM ELP ELV EMK ENA ERI ESC ESD EUG EVV EWB EWN EWR EXI EYW FAI 
##   4   4  10  25   2   4   2   6   2   2  18   8   5   4  56   2  16   5 
## FAR FAT FAY FBS FCA FKL FLG FLL FLO FMN FNT FOE FRD FSD FSM FWA FYU GAL 
##  18  20   8   2  10   4   2  56   2   4  16   2   2  18   4  18   4   5 
## GAM GCC GCK GCN GCW GDV GEG GFK GGG GGW GJT GLH GLV GNU GNV GPT GRB GRI 
##   4   6   2   2   2   2  20   8   2   2  12   2   4   2  10   8   8   6 
## GRK GRR GSO GSP GST GTF GTR GUC HCR HDN HGR HHH HIB HKB HLN HNH HNL HNM 
##   6  34  24  34   4  12   2   2   4   2   4   4   2   2   9   4  36   2 
## HNS HOB HOM HON HOT HOU HPB HPN HRL HRO HSL HSV HTS HUS HVN HVR HYA HYG 
##   4   2   2   2   4  54   3  22  12   4   5  18   8   4   2   2   5   2 
## HYL IAD IAG IAH IAN ICT IDA IGG IGM IKO ILG ILI ILM IMT IND INL IPL IPT 
##   5  56  10  56   4  21   8   2   4   2  12   2  10   4  54   4   4   2 
## IRC IRK ISN ISP ITH ITO JAC JAN JAX JBR JFK JHM JHW JLN JNU JST KAE KAL 
##   2   2   4  18   6   6   4  18  48   2  56   4   4   2   5   4   2   4 
## KBC KCC KCG KCL KCQ KFP KGX KKA KKB KKH KKI KLG KLL KLN KLW KOA KOT KOZ 
##   2   2   2   2   2   2   4   5   1   4   4   5   2   1   4  18   4   2 
## KPB KPN KPR KPV KQA KSM KTB KTN KTS KUK KVC KVL KWF KWK KWN KWT KYK KYU 
##   2   4   1   2   2   4   5   5   4   3   2   3   2   4   4   4   1   4 
## KZB LAM LAN LAR LAS LAW LAX LBB LBE LBF LBL LCH LCK LEB LEX LFT LGA LGB 
##   1   2  12   2  56   2  56  12   6   2   4   4   4   4  22   6  54  24 
## LIH LIT LKE LMA LMT LNK LNS LNY LPS LRD LSE LUK LUR LWB LWS LYH MAF MBL 
##  20  29   2   2   4   6   2   5   2   6   4   4   2   4   6   2  12   2 
## MBS MCE MCG MCI MCK MCN MCO MDT MDW MEI MEM MFE MFR MGM MGW MHK MHT MIA 
##   8   2   4  56   2   4  56  20  56   2  54   6  14   6   4   4  26  56 
## MKE MKG MKK MKL MLB MLI MLL MLU MLY MMH MMU MOB MOD MOT MOU MQT MRY MSL 
##  54   2   5   4   4  18   3   6   1   2   4  10   2   8   4   4  12   2 
## MSN MSO MSP MSS MSY MTJ MUE MVY MWA MYR MYU NIB NKI NLG NME NUI NUL NUP 
##  22  14  56   2  56   2   2   6   2  24   2   2   2   2   2   4   4   3 
## OAJ OAK OBU OGD OGG OGS OKC OLF OMA OME ONT OOK ORD ORF ORH ORV OTH OTZ 
##   6  36   3   2  26   2  37   2  38   5  26   2  56  36   4   4   4   4 
## OWB PAH PBG PBI PDT PDX PEC PGA PGD PGV PHF PHL PHO PHX PIA PIB PIE PIH 
##   4   2  10  34   2  47   2   4  18   2  10  56   4  56  18   2  18   2 
## PIP PIR PIT PIZ PKA PKB PLN PNS PPV PQI PQS PRC PSC PSG PSM PSP PTH PTU 
##   2   4  56   4   2   2   2  22   2   2   4   2  16   4   2  26   2   2 
## PUB PUW PVC PVD PVU PWM RAP RBY RCE RDD RDM RDU RDV RFD RHI RIC RIW RKD 
##   2   4   2  34   6  14  14   5   2   2  12  56   2  10   4  36   2   2 
## RKS RMP RNO ROA ROC ROW RSH RST RSW RUT SAF SAN SAT SAV SBA SBN SBP SBY 
##   6   2  27  18  34   2   5   6  48   2   6  56  54  26  12  18   6   4 
## SCC SCE SCK SCM SDF SDP SDY SEA SFB SFO SGF SGU SGY SHD SHG SHH SHR SHV 
##   5   8   2   3  45   2   2  56  22  56  18   4   4   3   3   4   2  10 
## SHX SIT SJC SJT SKK SLC SLK SLN SLQ SMF SMK SMX SNA SNP SOW SPI SPS SRQ 
##   4   4  36   2   5  56   2   2   2  37   4   4  34   4   4   4   2  12 
## SRV STC STG STL STS SUX SVA SVC SVS SWF SXP SYB SYR TAL TBN TCT TEB TKE 
##   2   4   4  56   8   2   4   2   4  10   4   1  28   5   2   2   2   2 
## TKJ TLA TLH TLJ TLT TNC TNK TOG TOL TPA TRI TTN TUL TUP TUS TVC TVF TWF 
##   2   4  14   2   4   2   2   2   8  56   8  26  32   2  31   6   2   2 
## TXK TYR TYS UGB UIN UNK UST VAK VCT VDZ VEE VEL VIS VLD VPS WAA WBB WBQ 
##   2   4  28   2   2   5   2   3   2   2   2   2   2   2  10   4   4   4 
## WLK WMO WNA WRG WRL WSN WSX WTK WTL WWP WWT XNA YAK YKM YNG YUM 
##   2   4   2   4   2   2   2   3   3   2   2  26   4   2   8   4

nba passing

load("n_pass.rda")
i_pass <- asIgraph(n_pass)
igraph::list.edge.attributes(i_pass)
## [1] "FGP"    "na"     "passes"
igraph::list.vertex.attributes(i_pass)
## [1] "na"           "ngames"       "position"     "vertex.names"
i_pass <- igraph::set.edge.attribute(i_pass, "weight", value = E(i_pass)$passes)
i_pass <- igraph::set.vertex.attribute(i_pass, "name", value=V(i_pass)$vertex.names)
edge_density(i_pass)
## [1] 0.9571429
mean_distance(i_pass, directed=T)
## [1] 1.042857
pos_num <- as.numeric(as.factor(V(i_pass)$position))
assortativity(i_pass, pos_num)
## [1] -0.1298526
actual <- assortativity(i_pass, pos_num)

results <- vector(length=1000)
for(i in 1:1000){
  results[i] <- assortativity(i_pass,sample(pos_num))
}
ggplot()+geom_histogram(aes(x=results))+
  geom_vline(xintercept = actual,
            size=1.2, color="red")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Degree assortativity

assortativity.degree(i_pass)
## [1] -0.1968207
reciprocity(i_pass)
## [1] 0.9850746

Passes recieved

recieved <- strength(i_pass, mode="in")
recieved
##    Patrick McCaw      Jordan Bell     Damian Jones       Quinn Cook 
##             1101              843               66             1334 
##     Kevon Looney   Draymond Green    Klay Thompson    Stephen Curry 
##              777             3446             2847             2993 
##     JaVale McGee       Nick Young     Kevin Durant   Andre Iguodala 
##              470             1197             3302             1916 
## Shaun Livingston    Zaza Pachulia       David West 
##             1740             1017             1323
gave <- strength(i_pass, mode="out")
gave
##    Patrick McCaw      Jordan Bell     Damian Jones       Quinn Cook 
##             1075             1207               72             1251 
##     Kevon Looney   Draymond Green    Klay Thompson    Stephen Curry 
##             1072             4352             1935             2539 
##     JaVale McGee       Nick Young     Kevin Durant   Andre Iguodala 
##              593              904             2738             2186 
## Shaun Livingston    Zaza Pachulia       David West 
##             1764             1351             1333
df_p <- data.frame(gave, recieved, players=names(recieved))
ggplot(df_p, aes(recieved, gave, label=players))+
  geom_point()+geom_label()+  ggtitle("Given and recieved passes")

igraph::degree(i_pass)
##    Patrick McCaw      Jordan Bell     Damian Jones       Quinn Cook 
##               28               28               22               28 
##     Kevon Looney   Draymond Green    Klay Thompson    Stephen Curry 
##               28               28               28               26 
##     JaVale McGee       Nick Young     Kevin Durant   Andre Iguodala 
##               24               28               28               28 
## Shaun Livingston    Zaza Pachulia       David West 
##               28               24               26
pass_close <- igraph::closeness(i_pass, weights = 1/E(i_pass)$weight,
                normalized = T, mode="all")
sort(pass_close, decreasing = T)
##     Kevin Durant    Klay Thompson Shaun Livingston   Draymond Green 
##        67.188228        45.044500        42.073977        39.991437 
##       Nick Young       Quinn Cook   Andre Iguodala      Jordan Bell 
##        34.068554        32.209315        30.687023        24.852371 
##    Stephen Curry     Kevon Looney    Patrick McCaw     JaVale McGee 
##        19.935498        15.166185        11.763825         5.813898 
##    Zaza Pachulia       David West     Damian Jones 
##         5.459719         4.376948         3.568174
pass_bet <- igraph::betweenness(i_pass, weights = 1/E(i_pass)$weight,
                normalized = T)
sort(pass_bet, decreasing=T)
##   Draymond Green     Kevin Durant    Stephen Curry       Quinn Cook 
##      0.434065934      0.153846154      0.148351648      0.142857143 
##    Klay Thompson Shaun Livingston    Patrick McCaw      Jordan Bell 
##      0.010989011      0.005494505      0.000000000      0.000000000 
##     Damian Jones     Kevon Looney     JaVale McGee       Nick Young 
##      0.000000000      0.000000000      0.000000000      0.000000000 
##   Andre Iguodala    Zaza Pachulia       David West 
##      0.000000000      0.000000000      0.000000000
p_rank <- page_rank(i_pass)$vector
sort(p_rank, decreasing = T)
##   Draymond Green     Kevin Durant    Stephen Curry    Klay Thompson 
##       0.13665118       0.12123153       0.10656721       0.10409694 
##   Andre Iguodala Shaun Livingston       David West       Quinn Cook 
##       0.07739258       0.07002230       0.05821080       0.05800035 
##       Nick Young    Patrick McCaw    Zaza Pachulia      Jordan Bell 
##       0.05171995       0.04812526       0.04717387       0.04173471 
##     Kevon Looney     JaVale McGee     Damian Jones 
##       0.03920867       0.02738581       0.01247885
transitivity(i_pass)
## [1] 0.9744186
plot(n_pass, vertex.cex=10*pass_bet, displaylabels=T)

x <- (pass_close-mean(pass_close))/sd(pass_close)
plot(n_pass, vertex.cex=x, displaylabels=T)

plot(n_pass, vertex.cex=10*p_rank, displaylabels=T)